import { saveAs } from "save-as"

// 获取文件扩展名
export function getExt (file) {
  const fileName = file.name
  const lastIndex = fileName.lastIndexOf('.')
  return fileName.substring(lastIndex)
}

// 通过url下载二维码
export function downloadByUrl(url, fileName){
  const urlStr = url.replace(/\\/g, "/");
  const xhr = new XMLHttpRequest();
  xhr.open("GET", urlStr, true);
  xhr.responseType = "blob";
  xhr.onload = () => {
    if (xhr.status === 200) {
      saveAs(xhr.response, fileName);
    }
  };
  xhr.send();
}

export function downloadByUrl1 (url) {
  const dA = document.createElement("a");
  dA.download = ''; // 设置下载的文件名，默认是'下载'
  dA.href = url;
  document.body.appendChild(dA);
  dA.click();
  dA.remove(); // 下载之后把创建的元素删除
}

export function downloadBase64Img(base64URL,fileName) {  
  // 创建a标签，用于触发下载  
  const a = document.createElement('a');  
  // 将 a 标签的 download 属性设置为要下载的文件名  
  a.download = fileName || 'image';  
  // 创建 Blob 对象，并获取 base64 数据的 MIME 类型  
  const mimeType = base64URL.match(/:(.*?);/)[1];  
  // 将 base64 数据转换为字节数组  
  const byteCharacters = atob(base64URL.split(',')[1]);  
  const byteNumbers = new Array(byteCharacters.length);  
  // 将字节数组填充到 Uint8Array 中  
  for (let i = 0; i < byteCharacters.length; i++) {  
    byteNumbers[i] = byteCharacters.charCodeAt(i);  
  }  
  const byteArray = new Uint8Array(byteNumbers);  
  // 创建 Blob 对象  
  const blob = new Blob([byteArray], {type: mimeType});  
  // 将 Blob 对象的 URL 赋值给 a 标签的 href 属性  
  a.href = URL.createObjectURL(blob);  
  // 将a标签暂时添加到 body 中，触发下载  
  document.body.appendChild(a);  
  a.click();  
  // 下载完成后，将 a 标签从 body 中移除  
  document.body.removeChild(a);  
}

export function copy (val, successCallback) {
  const inputValue = document.createElement('input');   // 创建DOM元素
  document.body. appendChild(inputValue);   // 将创建的DOM插入到Body上
  inputValue.value = val;   // 将数据赋值给创建的DOM元素的Value上
  inputValue.select();   // 通过表单元素的select()方法选中内容
  document.execCommand('copy');   // 执行浏览器复制命令
  console.log("复制成功");   // 复制完成后的提示
  document.body.removeChild(inputValue);   // 移除DOM元素
  successCallback && successCallback()
}